import $http from './http'
import qs from 'qs'
import { AxiosResponse, AxiosError } from 'axios'
/**
 * @description POST请求JSON数据格式
 * @author 罗宏
 * @date 2019-02-23
 * @param {string} url  
 * @param {*} params http请求参数
 * @param {boolean} bool 请求成功是否给出提示信息
 * @returns 
 */
export function postJson(url:string,params:any,bool?:boolean){
    return new Promise((resolve,reject)=>{
        $http.post(url,params).then((res:AxiosResponse)=>{
            checkStatus(res,bool)
            resolve(res)
        }).catch((err)=>{
            reject(err)
        })
    })
}

/**
 * @description POST请求FROM数据格式
 * @author 罗宏
 * @date 2019-02-23
 * @param {string} url  
 * @param {*} params http请求参数
 * @returns 
 */

export function postFrom(url:string,params:any,bool?:boolean){
    return new Promise((resolve,reject)=>{
        $http.post(url,qs.stringify(params)).then((res:AxiosResponse)=>{
            checkStatus(res,bool)
            resolve(res)
        }).catch((err)=>{
            reject(err)
        })
    })
}

/**
 * @description GET请求JSON数据格式
 * @author 罗宏
 * @date 2019-02-23
 * @param {string} url  
 * @param {*} params http请求参数
 * @returns 
 */

export function getJson(url:string,params:any,bool?:boolean){
    return new Promise((resolve,reject)=>{
        $http.get(url,{params:params}).then((res:AxiosResponse)=>{
            checkStatus(res,bool)
            resolve(res)
        }).catch((err)=>{
            reject(err)
        })
    })
}

/**
 * @description GET请求Path数据格式
 * @author 罗宏
 * @date 2019-02-23
 * @param {string} url  
 * @param {*} params http请求参数
 * @returns 
 */

export function getPath(url:string,bool?:boolean){
    return new Promise((resolve,reject)=>{
        $http.get(url).then((res:AxiosResponse)=>{
            checkStatus(res,bool)
            resolve(res)
        }).catch((err)=>{
            reject(err)
        })
    })
}



function checkStatus(response:AxiosResponse,bool:boolean){
       if(!response.data.status){
          $msg.error(response.data.message)
       }

       if(bool){
          $msg.success(response.data.message)
       }    
}